home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 February: Tool Chest / Dev.CD Feb 94.toast / New System Software Extensions / QuickDraw™ GX v1.0ß2 / Interfaces & Libraries / interfaces / memory debugging.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-29  |  2.3 KB  |  68 lines  |  [TEXT/MPS ]

  1. /* memory manager:
  2.     public interface definition
  3.     by Cary Clark, Georgiann Delaney, Michael Fairman, Dave Good, Robert Johnson, Keith McGreggor, Oliver Steele, David Van Brink, Chris Yerga
  4.     Copyright 1987 - 1991 Apple Computer, Inc.  All rights reserved.    */
  5.  
  6. #ifndef memoryDebuggingIncludes
  7. #define memoryDebuggingIncludes
  8.  
  9.     #ifndef memoryTypesIncludes
  10.         #include "memory types.h"
  11.     #endif
  12.  
  13.     #ifdef appleInternal
  14.         #ifdef insideLoader
  15.             #define GXInlineCode(x)   = {0x303C, 0x0800 + x, 0xA832}
  16.         #else
  17.             #define GXInlineCode(x)
  18.         #endif
  19.     #endif
  20.     #ifndef GXInlineCode
  21.         #define GXInlineCode(x)   = {0x7000 + (x), 0xA832}
  22.     #endif
  23.  
  24.     typedef enum {
  25.         checkBlocks        = 0x0001,    /* check blocks when they are passed to the memory manager */
  26.         checkHeap            = 0x0002,    /* check the entire gxHeap in every memory routine */
  27.         scrambleBlocks        = 0x0004,    /* pretend that every movable block in the gxHeap moves every time that they could */
  28.         unloadBlocks        = 0x0008        /* unload every block in the heap every time any memory is allocated (overrides scrambleBlocks) */
  29.     } memoryValidationFlags;
  30.  
  31.     #ifdef __cplusplus
  32.     extern "C" {
  33.     #endif
  34.  
  35.     long GetHeapValidation(const gxHeap *source) GXInlineCode(49);
  36.     void SetHeapValidation(gxHeap *target, long flags) GXInlineCode(50);
  37.  
  38.     void ValidateHeap(const gxHeap *target, long flags) GXInlineCode(51);
  39.     void ValidateDirectBlock(const void *block) GXInlineCode(52);
  40.     void ValidateIndirectBlock(const void *block) GXInlineCode(53);
  41.     void ValidateMasterPointer(const void *masterPointer) GXInlineCode(54);
  42.     void ValidateBlockRange(const void *rangeStart, long length) GXInlineCode(55);
  43.  
  44.     void *GetDebugMessageHandler(void) GXInlineCode(67);
  45.     void SetDebugMessageHandler(void (*newHandler)(const char *msg, long data)) GXInlineCode(68);
  46.  
  47. #if defined(appleInternal) && !defined(debugging)
  48.     #define UnscrambleMaster(x) (x)
  49. #else
  50.     void *UnscrambleMaster(const void *masterPtr) GXInlineCode(56);
  51. #endif
  52. #if !defined(noObsoleteMacros) && defined(appleInternal)
  53.     #ifdef debugging
  54.         #define MasterFlip(x)   UnscrambleMaster(x)
  55.     #else
  56.         #define MasterFlip(x)   (x)
  57.     #endif
  58. #endif
  59.  
  60.  
  61.     #ifdef __cplusplus
  62.     }
  63.     #endif
  64.  
  65.     #undef GXInlineCode
  66.  
  67. #endif
  68.